#include "adc.h"

void Adc_Init(ADC_PIN adc_pin)
{
	switch(adc_pin)
	{
		case ADC_CH5_Port5_Pin0: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
                                               GPIO_PIN0, GPIO_TERTIARY_MODULE_FUNCTION);break;
		case ADC_CH4_Port5_Pin1: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
                                               GPIO_PIN1, GPIO_TERTIARY_MODULE_FUNCTION);break;
		case ADC_CH3_Port5_Pin2: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
                                               GPIO_PIN2, GPIO_TERTIARY_MODULE_FUNCTION);break;
		case ADC_CH2_Port5_Pin3: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
                                               GPIO_PIN3, GPIO_TERTIARY_MODULE_FUNCTION);break;
		case ADC_CH1_Port5_Pin4: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
                                               GPIO_PIN4, GPIO_TERTIARY_MODULE_FUNCTION);break;
		case ADC_CH0_Port5_Pin5: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
                                               GPIO_PIN5, GPIO_TERTIARY_MODULE_FUNCTION);break;
		case ADC_CH7_Port4_Pin6: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P4,
                                               GPIO_PIN6, GPIO_TERTIARY_MODULE_FUNCTION);break;
		case ADC_CH6_Port4_Pin7: GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P4,
                                               GPIO_PIN7, GPIO_TERTIARY_MODULE_FUNCTION);break;
	}
	
	ADC14_enableModule();
  ADC14_initModule(ADC_CLOCKSOURCE_MCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_1,
            0);
 ADC14_configureMultiSequenceMode(ADC_MEM0, ADC_MEM7, false);
	
	ADC14_configureConversionMemory(ADC_MEM7,
            ADC_VREFPOS_INTBUF_VREFNEG_VSS,
            ADC_INPUT_A7, false);
}

